package main

import "fmt"

/**
    在做函数调用时，slice 按引用传递，array 按值传递：
* @author zhangyu
* @date 2022/4/11
*/
func main() {
	arr1 := []int{1, 2, 3}
	arr2 := [3]int{1, 2, 3}
	arr3 := [3]int{1, 2, 3}
	fmt.Println("arr1修改前", arr1)
	changeSlice(arr1)
	fmt.Println("arr1修改后", arr1)
	fmt.Println("arr2修改前", arr2)
	changeArray(arr2)
	fmt.Println("arr2修改后", arr2)
	changeArrayByPtr(&arr3)
	fmt.Println("arr3修改后", arr3)
}

func changeArrayByPtr(arr3 *[3]int) {
	arr3[0] = 200
}

func changeArray(array [3]int) {
	array[0] = 100
}

//引用传递
func changeSlice(arr []int) {
	arr[0] = 100
}

func printSlice(x []int) {
	fmt.Printf("长度=%d 容量=%d 元素=%v\n", len(x), cap(x), x)
}
